//
//  ESTransmitterDefines.h
//  ESTransmit
//
//  Created by Huang Zhou on 2018/3/29.
//  Copyright © 2018年 excelsecu. All rights reserved.
//

#ifndef ESTransmitterDefines_h
#define ESTransmitterDefines_h

#import <Foundation/Foundation.h>
///*!
// @enum
// @abstract  key的屏幕方向
// 
// @constant  ESDirectionToggle       表示翻转一回方向（从正向到反向或者从反向到正向），每调用一次就翻转一次
// @constant  ESDirectionPortrait     表示将key屏幕正向显示
// @constant  ESDirectionUpsideDown   表示将key屏幕反向显示
// */
//typedef NS_ENUM(UInt32, ESDirection){
//    ESDirectionToggle     = 0x00,
//    ESDirectionPortrait   = 0x01,
//    ESDirectionUpsideDown = 0x02
//};


#define ESStringEncodingUnknown -1
#define ESStringEncodingUTF8    NSUTF8StringEncoding
#define ESStringEncodingGBK     CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGBK_95)
#define ESStringEncodingGB2312  CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_2312_80)
#define ESStringEncodingGB18030 CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)
#define ESStringEncodingUnicode NSUnicodeStringEncoding

typedef UInt32 ESTransmitError;
typedef UInt32 ESCosError;
typedef UInt32 ESDriverError;
//详见 OperateError.h
NS_ENUM(ESTransmitError){
    ESTransmitSuccess                               = 0x00000000,// 成功
    ESTransmitFailed                                = 0xE0631701,// 成功
    ESTransmitHandshakeFail                         = 0xE0636FFF,// 建立握手失败
    ESTransmitInvalidPairCode                       = 0xE06363C0,// 配对码验证失败
    ESTransmitPairCodeLocked                        = 0xE0636983,// 配对码错误导致锁定

    ESTransmitInvalidParam                          = 0xE0633004,// 无效参数
    ESTransmitErrorCancel                           = 0xE0633007,// 软件层取消按键操作
    ESTransmitErrorTimeout                          = 0xE0633008,// 操作因超时而被取消
    ESTransmitErrorInvalidBuffer                    = 0xE063300C,// 缓冲区不足，包括申请失败，出参Buffer长度不足


    ESTransmitErrorInvalidBLE                       = 0xE0634001,// 系统BLE处于不可用的状态
    ESTransmitPairTypeNotSupport                    = 0xE0634002,// 配对方式不支持，目前只支持交行和建行两种模式
    ESTransmitInvalidDriver                         = 0xE0634003,// 驱动库没加载，这个错误基本不会出现
    ESTransmitUnexpectedDisconnected                = 0xE0634004,// 非主动调用disconnect接口，其他原因导致Key处于连接断开状态
};
    
NS_ENUM(ESCosError) {
    ESCosInvalidFileType               = 0xE0616981,// 文件类型不匹配
    ESCosAccessDenied                  = 0xE0616982,// 安全状态不满足
    ESCosInvalidRandom                 = 0xE0616984,// 随机数不可用或者引用数据无效
    ESCosConditionNotSatisfied         = 0xE0616985,// 使用条件不满足
    ESCosFileNotSelected               = 0xE0616986,// 没有当前文件
    ESCosNotProtectedMessage           = 0xE0616987,// 缺少安全报文数据对象
    ESCosInvalidProtectedMessage       = 0xE0616988,// 安全报文项不正确
    ESCosInvalidAPDUParam              = 0xE0616A80,// 数据域参数错误(全部错误)
    ESCosFunctionUnsupported           = 0xE0616A81,// 功能不支持
    ESCosFileNotFound                  = 0xE0616A82,// 没有找到文件
    ESCosRecordNotFound                = 0xE0616A83,// 没有找到记录
    ESCosNoSpace                       = 0xE0616A84,// 缺少剩余空间
    ESCosInvalidTLVData                = 0xE0616A85,// TLV数据对象不一致
    ESCosInvalidP1P2Param              = 0xE0616A86,// P1P2参数不正确
    ESCosReferencedDataNotFound        = 0xE0616A88,// 没有找到引用数据
    ESCosOutOfBounds                   = 0xE0616B00,// 偏移超出范围
    ESCosInvalidINS                    = 0xE0616D00,// 不正确的INS
    ESCosInvalidCLA                    = 0xE0616E00,// 不正确的CLA
    ESCosPartitionInvalidAPDUParam     = 0xE0616FEB,// 数据域参数错误(部分错误)
    
    ESCosDeviceRequireInitialize       = 0xE0616FF0,// 设备没有初始化
    ESCosDeviceTimeout                 = 0xE0616FFB,// 通讯超时或者通讯数据格式错误
    ESCosKeyIDNotFound                 = 0xE0619403,// 没有找到密钥记录
    ESCosUserCancelled                 = 0xE0616FF8,// 用户取消
    ESCosButtonTimeout                 = 0xE0616FF9,// 按键超时
    ESCosButtonWrong                   = 0xE0616FFE,// 按键错误
    ESCosHandshakeFail                 = 0xE0616FFF,// 建立握手失败

    ESCosInvalidPassword               = 0xE06163C0,//密码重试次数,可用 ESCosInvalidPassword == u4Result & 0xFFFFFFF0判断是否密码错误
    ESCosPINLocked                     = 0xE0616983,// 密钥已经被锁定
    ESCosLowEnergy                     = 0xE0616FD0,// 低电量
};
    
NS_ENUM(ESDriverError) {
    // 音频驱动错误码
    ESAudioDriverInitializeFail        = 0xE0601500,// 音频驱动初始化失败，可能是麦克风被禁用或占用
    ESAudioDriverCommunicationFail     = 0xE0601501,// 音频驱动通讯错误
    ESAudioDriverInvalidDataFormat     = 0xE0601502,// 音频协议数据包错误(不符合协议规定)
    ESAudioDriverInvalidParam          = 0xE0601503,// 音频驱动参数错误
    ESAudioDriverUnsupportedIOCtl      = 0xE0601504,// 音频驱动控制码不支持
    ESAudioDriverNotReady              = 0xE0601505,// 音频通道未就绪（如没插入耳机线）
    ESAudioDriverProtocolNotSupported  = 0xE0601506,// 音频协议版本不支持/不兼容
    ESAudioDriverCancel                = 0xE0601507,// 指令取消、因驱动未初始化直接返回
    ESAudioDriverRouteDidChanged       = 0xE0601508,// 音频路由改变
    ESAudioDriverConfigFail            = 0xE0601509,// 音频通信配置失败
    ESAudioDriverBusy                  = 0xE060150A,// 音频固件/ey设备忙
    ESNAudioDriverV2ProtocolFound      = 0xE060150B,// 检测到V2版通信协议（错误码只在驱动内使用）
    
    
    // 蓝牙驱动错误码
    ESBluetoothInitializeFail          = 0xE0601700,// 蓝牙驱动初始化失败
    ESBluetoothCommunicationError      = 0xE0601701,// 蓝牙驱动通讯错误/蓝牙断开
    ESBluetoothInvalidDataFormat       = 0xE0601702,// 蓝牙协议数据包错误(不符合协议规定)
    ESBluetoothDisconnected            = 0xE0601703,// 蓝牙断开连接
    // 新加
    ESBluetoothIOCodeNotSupport        = 0xE0601704,// 蓝牙驱动IO码不支持
    ESBluetoothInvalidParam            = 0xE0601705,// 蓝牙驱动参数不合法
    
    ESBluetoothCommFailedAfterSystemPaired = 0xE0601707,// 系统配对后一段时间内通信失败，用于提醒上层重试
};

#endif /* ESTransmitterDefines_h */
